home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
misc
/
Hunk.lha
/
Hunk
/
Hoppers
/
HCE_NorthC.hop
< prev
next >
Wrap
Text File
|
1998-02-14
|
8KB
|
193 lines
;*************************************************************************
;** HCE 1.0 & NorthC 1.2 MUL(S)/DIV(S)/MOD(S) **
;** Contributor: L.Lucius Sept 23rd 1995 **
;** Modified for HOp: Thomas Richter (thor) Nov 1st 1997 **
;** Function: Modify 68000 math routines to use 68020+ instructions. **
;*************************************************************************
;*************************************************************************
;
; Divs
;
#match
#code
202F 0004 ; MOVE.L 0004(A7),D0
6A02 ; BPL.B 0008
4480 ; NEG.L D0
222F 0008 ; MOVE.L 0008(A7),D1
6A08 ; BPL.B 0016
4481 ; NEG.L D1
0A2F 0080 0004 ; EORI.B #80,0004(A7)
6100 008E ; BSR.W 00A6
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0022
4480 ; NEG.L D0
4E75 ; RTS
;
; MULS()
;
202F 0004 ; MOVE.L 0004(A7),D0
6A02 ; BPL.B 002C
4480 ; NEG.L D0
222F 0008 ; MOVE.L 0008(A7),D1
6A08 ; BPL.B 003A
4481 ; NEG.L D1
0A2F 0080 0004 ; EORI.B #80,0004(A7)
614E ; BSR.B 008A
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0044
4480 ; NEG.L D0
4E75 ; RTS
;
; MODS()
;
202F 0004 ; MOVE.L 0004(A7),D0
6A02 ; BPL.B 004E
4480 ; NEG.L D0
222F 0008 ; MOVE.L 0008(A7),D1
6A02 ; BPL.B 0056
4481 ; NEG.L D1
614E ; BSR.B 00A6
2001 ; MOVE.L D1,D0
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0062
4480 ; NEG.L D0
4E75 ; RTS
;
; DIVU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6138 ; BSR.B 00A6
4E75 ; RTS
;
; MULU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6110 ; BSR.B 008A
4E75 ; RTS
;
; MODU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6120 ; BSR.B 00A6
2001 ; MOVE.L D1,D0
4E75 ; RTS
XXXX ; MOVEA.L D3,A2 | MOVE.L D3,-(A7)
3401 ; MOVE.W D1,D2
C4C0 ; MULU.W D0,D2
2601 ; MOVE.L D1,D3
4843 ; SWAP D3
C6C0 ; MULU.W D0,D3
4840 ; SWAP D0
C0C1 ; MULU.W D1,D0
D083 ; ADD.L D3,D0
4840 ; SWAP D0
4240 ; CLR.W D0
D082 ; ADD.L D2,D0
XXXX ; MOVE.L A2,D3 | MOVE.L (A7)+,D3
4E75 ; RTS
4A81 ; TST.L D1
660E ; BNE.B 00B8
80FC 0000 ; DIVU.W #0000,D0
203C 8000 0000 ; MOVE.L #80000000,D0
2200 ; MOVE.L D0,D1
4E75 ; RTS
XXXX ; MOVEA.L D3,A2 | MOVE.L D3,-(A7)
B081 ; CMP.L D1,D0
6212 ; BHI.B 00D0
;
;
#replace
;
; DIVS()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
4C41 0801 ; DIVSL.L D1,D1:D0
4E75 ; RTS
4481 ; NEG.L D1
0A2F 0080 0004 ; EORI.B #80,0004(A7)
6100 008E ; BSR.W 00A6
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0022
4480 ; NEG.L D0
4E75 ; RTS
;
; MULS()
;
202F 0004 ; MOVE.L 0004(A7),D0
4C2F 0800 0008 ; MULS.L 0008(A7),D0
4E75 ; RTS
6A08 ; BPL.B 003A
4481 ; NEG.L D1
0A2F 0080 0004 ; EORI.B #80,0004(A7)
614E ; BSR.B 008A
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0044
4480 ; NEG.L D0
4E75 ; RTS
;
; MODS()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
4C41 0801 ; DIVSL.L D1,D1:D0
C141 ; EXG D0,D1
4E75 ; RTS
614E ; BSR.B 00A6
2001 ; MOVE.L D1,D0
4A2F 0004 ; TST.B 0004(A7)
6A02 ; BPL.B 0062
4480 ; NEG.L D0
4E75 ; RTS
;
; DIVU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6138 ; BSR.B 00A6
4E75 ; RTS
;
; MULU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6110 ; BSR.B 008A
4E75 ; RTS
;
; MODU()
;
202F 0004 ; MOVE.L 0004(A7),D0
222F 0008 ; MOVE.L 0008(A7),D1
6120 ; BSR.B 00A6
2001 ; MOVE.L D1,D0
4E75 ; RTS
4C01 0000 ; MULU.L D1,D0
4E75 ; RTS
2601 ; MOVE.L D1,D3
4843 ; SWAP D3
C6C0 ; MULU.W D0,D3
4840 ; SWAP D0
C0C1 ; MULU.W D1,D0
D083 ; ADD.L D3,D0
4840 ; SWAP D0
4240 ; CLR.W D0
D082 ; ADD.L D2,D0
260A ; MOVE.L A2,D3
4E75 ; RTS
4A81 ; TST.L D1
660E ; BNE.B 00B8
80FC 0000 ; DIVU.W #0000,D0
203C 8000 0000 ; MOVE.L #80000000,D0
2200 ; MOVE.L D0,D1
4E75 ; RTS
4C41 0001 ; DIVUL.L D1,D1:D0
4E75 ; RTS
#end